%----------------------------------------
% IT IS RECOMMENDED TO USE AUTOLATEX FOR
% COMPILING THIS DOCUMENT.
% http://www.arakhne.org/autolatex
%----------------------------------------

\documentclass[article,english,nodocumentinfo]{multiagentfrreport}

% The TeX code is entering with UTF8
% character encoding (Linux and MacOS standards)
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{../common/sarl-listing}

\graphicspath{{imgs/auto/},{imgs/},{../common/}}

\declaredocument{VI51 Lab Work \#5}{Boids and Ants}{UTBM-INFO-VI51-LW5}

\addauthorvalidator*[St\'ephane Galland]{St{\'e}phane}{Galland}{Teacher}

\updateversion{5.0}{\makedate{03}{05}{2015}}{First release on Github}{\upmpublic}

\Set{mafr_contact_name}{\phdname*{St\'ephane}{Galland}}
\Set{mafr_contact_email}{stephane.galland@utbm.fr}
\Set[french]{mafr_contact_phone}{03~84~58~34~18}
\Set[english]{mafr_contact_phone}{+33 384~583~418}

\gdef\skeletonName{\texttt{\mbox{LW5\_VI51\_skeleton\string.jar}}}

\begin{document}

\section{Goal of this Lab Work Session}

The goal of this lab work session is to write the behaviors of boids, and ants.

You shall learn: 
\begin{itemize}
\item the boids behavior.
\item the ant behavior.
\item the environment model for a ant colony simulation.
\end{itemize}

\input{../common/install}

\section{Brief Description of the Code Skeleton}

The skeleton contains a framework in the package \texttt{fr.utbm.info.vi51.framework}.
This framework contains the abstract implementation for the execution platform.
\emph{It is recommended to read this code and the associated Javadoc.}

The package \texttt{fr.utbm.info.vi51.labwork5} contains the code to complete during this lab work.

The subpackages are or will be:
\begin{itemize}
\item \texttt{fr.utbm.info.vi51.motionbehavior} is the package that contains the movement behaviors (kinematic and/or steering).
\item \texttt{fr.utbm.info.vi51.labwork4.environment} contains the definition of the environment and the objects inside that are specific to the lab work.
\item \texttt{fr.utbm.info.vi51.labwork4.gui} contains the UI for the project.
\item \texttt{fr.utbm.info.vi51.labwork4.agent} contains the code of the agent to complete.
\item The file \texttt{fr/utbm/info/vi51/labwork4/MainProgram.java} contains the main program.
\end{itemize}

\section{Work to be Done during the Lab Work Session}

The following sections describe the work to be done during this lab work session.

\subsection{Boid Behavior}

You must implement the behavior of a boid.

You should:
\begin{enumerate}[a)]
\item read the class \texttt{WorldModel} for understanding the types of objects that will be included in the agents' perceptions.
\item Write the behavior in \texttt{Fish} agent, for reproducing a Boid.
\end{enumerate}

\subsection{Environment Model for Ant Colony}

In this section, you must update the environment model for enabling the creation of pheromones in the environment, and their evaporation.

You should:
\begin{enumerate}[a)]
\item Create the type of environment object \texttt{Pheromone}.
\item Create the type of environment object \texttt{Food}.
\item Create a data structure for containing the pheronomons in the \texttt{WorldModel} class.
\item Update the \texttt{getAllObjects} function.
\item Update the \texttt{computeEndogenousBehaviorInfluences} function for evaporating the pheromons.
\item Update the \texttt{computePerceptionsFor} function for evaporating the pheromons.
\item Update the \texttt{applyInfluences} function for evaporating the pheromons.
\end{enumerate}

\subsection{Ant Behavior}

In this section, you must create the behavior of a ant that is searching for food.
You must use pheromone for returning to the colony, and/or returning to the food source.

You should:
\begin{enumerate}[a)]
\item Write the behavior in \texttt{Ant} agent, for reproducing an Ant.
\end{enumerate}

\subsection{Main Program for Ant Simulation}

You should:
\begin{enumerate}[a)]
\item Update the function \texttt{main} for launching ants.
\end{enumerate}

\end{document}
